package com.telit.android.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.telit.android.dto.AppSignInDto;
import com.telit.android.entity.AppSignIn;

import java.util.List;
import java.util.Map;


/**
 * @Author:zhangwei
 * @Description:
 * @Time:Created on 2021/9/1 14:07
 */
public interface AppSignInService extends IService<AppSignIn> {
    /**
     * 新增用户签到信息
     * @param appSignIn
     */
    void add(AppSignIn appSignIn);

    /**
     * 分页条件查询用户签到信息
     * @param current
     * @param size
     * @param appSignIn
     * @return
     */
    IPage<AppSignIn> selectByPage(Integer current, Integer size, AppSignIn appSignIn);

    /**
     * 无分页条件查询用户签到信息
     * @param appSignIn
     * @return
     */
    List<AppSignIn> selectByNoPage(AppSignIn appSignIn);

    /**
     * 修改用户签到信息
     * @param appSignIn
     */
    void updateData(AppSignIn appSignIn);

    /**
     * 根据ID删除用户签到信息
     * @param id
     */
    void deleteById(Long id);

    /**
     * 根据用户ID查询当月签到天数
     * @param userId
     * @return
     */
    int getSignDayNumMonth(Long userId);

    /**
     * 根据用户ID查询当月签到日信息列表
     * @param userId
     * @return
     */
    List<Map<String,Object>> listSignDayByMonth(Long userId,String signDate);

    /**
     * 根据用户ID查询当年每个月签到天数
     * @param userId
     * @param year
     * @return
     */
    List<Map<String, Object>> listSignDayNumByYear(Long userId, String year);

    /**
     * 根据用户ID和日期（年-月-日）查询日签到信息
     * @param userId
     * @param signDate
     * @return
     */
    AppSignIn getSignInfoByDate(Long userId, String signDate);

    IPage<AppSignIn> searchListByPage(Integer current, Integer size, AppSignInDto appSignInDto) throws JsonProcessingException;

    AppSignIn selectById(Long id);
}
